#pragma once

#include <cassert>
#include <memory>
#include "ScriptCompiler/Token/FilePosition.h"

#include "Containers/String.h"

class CScriptFileContext;


enum class EIdentifierType
{
    Class,
    Field,
    Function,
    Parameter,
    Variable,
    Namespace,
    //Delegate,
    Property,
    Constructor,

};

CString ToString(EIdentifierType InIdentifierType);


class IIdentifierDescription
{
public:
    std::shared_ptr<CScriptFileContext> File;
    SScriptFilePosition PositionInFile;

    virtual EIdentifierType GetIdentifierType() const =0;

    virtual CString GetSearchName() const =0;

    virtual ~IIdentifierDescription() {};
};